package com.yusito.hadoop.hdfs;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;

import java.io.IOException;
import java.net.URI;

public class HDFSServer {

    /**
     * 日志对象
     */
    protected static final Log log = LogFactory.getLog(HDFSServer.class);

    private static Configuration configuration;

    private static FileSystem fileSystem;

    private static final String HDFS_URL = "hdfs://hadoop01:9000";

    /**
     * HDFS服务器读取初始化
     */
    private static void init() {
        try {
            configuration= new Configuration();
			if (StringUtils.isBlank(HDFS_URL)) {
                // 返回默认文件系统  如果在 Hadoop集群下运行，使用此种方法可直接获取默认文件系统
                fileSystem = FileSystem.get(configuration);
            } else {
                // 返回指定的文件系统,如果在本地测试，需要使用此种方法获取文件系统       
                fileSystem = FileSystem.get(URI.create(HDFS_URL), configuration,"hadoop");//user:"hadoop",若不设置则默认为当前客户端系统登录用户
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /**
     * 获取文件系统
     *
     * @return FileSystem
     */
    public static FileSystem getFileSystem(){
        if(fileSystem==null){
            init();
        }
        return fileSystem;
    }

}
